Modern computing continues to have areas where improvement is desired. The continuing evolution of how computers are designed and programmed at both the intra-machine and inter-machine level leads to new issues of performance, security, reliability, power consumption, efficiency, and so forth. Increasing complexity can make it difficult to identify bugs or critical aspects of machines or software. It has been known to analyze groups of static computers (e.g., static files of dormant machines) to learn about individual machines as well as groups of machines. Physical computers (physical machines) have been automatically analyzed to identify features in common among failing or well-performing machines, programmatic bugs, machines that are performing poorly or are experiencing errors, and so forth. However, to date, such analysis has been limited to the static state of physical machines, log files, disk images, and the like. It has not been possible to analyze, as a body, large groups of running computers.
Recently, however, in some environments such as compute clouds, data centers, etc., operating systems and software thereon are sometimes run on virtual machines (VMs), which are described in detail below. With virtual machine technology, it is possible to capture and store a snapshot of a running “machine”, including hardware state of the machine, software state, operating system state, file system state, memory state, and so forth. This captured state of a machine “in motion” holds information that has not previously been considered as a collective set of data that may be subject to analysis.
Techniques related to analysis of sets virtual machine snapshots are discussed below.